Merge branch 'atomaka/refactor/demeter-fixes' into 'master'
Fix some law of demeter violations ``` @post.user.username ``` is not good ``` delegate :username, to: :user, prefix: true @post.user_username ``` is apparently good? Although I've never really seen the advantage since I feel like we're just masking an underlying problem. But at least it looks a little nicer. See merge request !14
This commit is contained in:
commit
7f540a73e1
7 changed files with 11 additions and 3 deletions
|
@ -2,6 +2,8 @@ class Post < ActiveRecord::Base
|
|||
belongs_to :user
|
||||
belongs_to :subcreddit
|
||||
|
||||
delegate :username, to: :user, prefix: true
|
||||
|
||||
validates :title,
|
||||
presence: true,
|
||||
length: { maximum: 300 }
|
||||
|
|
|
@ -8,6 +8,8 @@ class Subcreddit < ActiveRecord::Base
|
|||
|
||||
attr_accessor :closed
|
||||
|
||||
delegate :username, to: :owner, prefix: true
|
||||
|
||||
before_save :set_closed_at
|
||||
|
||||
validates :name,
|
||||
|
|
|
@ -18,4 +18,4 @@
|
|||
.title Moderators
|
||||
.box
|
||||
ul
|
||||
li= @subcreddit.owner.username
|
||||
li= @subcreddit.owner_username
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.posts
|
||||
.post.show
|
||||
p.title= link_to @post.title, [@subcreddit, @post]
|
||||
p.details= "submitted #{distance_of_time_in_words @post.created_at, Time.now} ago by #{@post.user.username}"
|
||||
p.details= "submitted #{distance_of_time_in_words @post.created_at, Time.now} ago by #{@post.user_username}"
|
||||
ul.links.list-inline
|
||||
li= link_to 'XXX comments', ''
|
||||
li= link_to 'source', ''
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
li
|
||||
.post
|
||||
p.title= link_to post.title, [@subcreddit, post]
|
||||
p.details= "submitted #{distance_of_time_in_words post.created_at, Time.now} ago by #{post.user.username}"
|
||||
p.details= "submitted #{distance_of_time_in_words post.created_at, Time.now} ago by #{post.user_username}"
|
||||
ul.links.list-inline
|
||||
li= link_to 'XXX comments', ''
|
||||
li= link_to 'share', ''
|
||||
|
|
|
@ -6,6 +6,8 @@ describe Post, type: :model do
|
|||
it { should belong_to(:user) }
|
||||
it { should belong_to(:subcreddit) }
|
||||
|
||||
it { should delegate_method(:username).to(:user).with_prefix }
|
||||
|
||||
context 'with valid data' do
|
||||
it 'should be valid' do
|
||||
expect(post).to be_valid
|
||||
|
|
|
@ -7,6 +7,8 @@ describe Subcreddit, type: :model do
|
|||
|
||||
it { should belong_to(:owner).class_name('User') }
|
||||
|
||||
it { should delegate_method(:username).to(:owner).with_prefix }
|
||||
|
||||
context 'with valid data' do
|
||||
it 'should be valid' do
|
||||
expect(subcreddit).to be_valid
|
||||
|
|
Loading…
Reference in a new issue