1

我正在尝试理解一个预构建的应用程序,其中:

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:friend因为它们不是友谊模型中的属性。这只是写作的一种简短方式,:user_id还是friend_id他实际上提供了:user对象和:friend对象?如果它们确实是对象,那是什么意思?

4

2 回答 2

1

这不是一种简短的写作方式user_idattr_accessible意味着,您可以在创建友谊时批量分配一段时间用户。这意味着你可以 attr_accessible :status,:user,:friend

Friendship.create! user: user1, friend: friend1

否则attr_accessible抛出错误,因为用户和朋友的批量分配被禁用

于 2013-03-27T09:57:55.293 回答
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。只是方法不同而已。

注意:您应该只允许访问您想要分配的属性,否则您可能会创建批量分配漏洞。

于 2013-03-27T09:58:03.837 回答