我正在尝试理解预先构建的应用程序:
class Friendship < ActiveRecord::Base
attr_accessible :status,:user,:friend
belongs_to :user
belongs_to :friend, :class_name => "User",:foreign_key => "friend_id"
end
我对他提供attr_accessible
和:user
的{{1}}部分感到困惑,因为它们不是友谊模型中的属性。这只是写:friend
或:user_id
的简短方法,还是他实际上提供了friend_id
对象和:user
对象?如果它们确实是物体,那意味着什么?
答案 0 :(得分:1)
这不是写user_id
的简短方法。 attr_accessible
表示您可以在创建友谊时批量指定一位用户。这意味着您可以 attr_accessible :status,:user,:friend
Friendship.create! user: user1, friend: friend1
没有 attr_accessible
会引发错误,因为用户和朋友的批量分配已被停用
答案 1 :(得分:1)
不是分配user_id或friend_id,而是允许您分配用户或朋友:
Friendship.create!(:status=>"active", :user=>current_user, :friend=>@friend)
使用attr_accessible :user_id,:friend_id
,您可以这样做:
Friendship.create!(:status=>"active", :user_id=>current_user.id, :friend_id=>@friend.id)
简而言之,两种方式都有效地保存了user_id和friend_id。只是采用不同的方式。
注意:您应该只能访问要分配的属性,否则您可能会创建质量分配漏洞。