Rails - 使用属性连接表(HABTM + Through)但是如何创建/删除记录?

时间:2011-01-06 22:26:21

标签: ruby-on-rails syntax has-many-through

我有一个用户模型和兴趣模型由一个名为Choice的连接表连接(详情如下)。我正在使用HABTM关系,因为我在连接表中也有一个属性。

User.rb

has_many :choices
has_many :interests, :through => :choices

Interest.rb

has_many :choices
has_many :users, :through => :choices

Choice.rb

belongs_to :user
belongs_to :interest

所以问题是如何将记录添加到这个新创建的选择表中。例如=>

@user = User.find(1)
@interest = Interest.find(1)
?????   Choice << user.id + interest.id + 4(score attribute) ??????

最后一部分是我遇到问题的部分..我有这3个参数而不是如何添加它们以及语法是什么?

1 个答案:

答案 0 :(得分:2)

您有几个选项可以添加选项,但最有意义的是通过确定用户实例来添加选项:

假设:

@user = User.find(1)
@interest = Interest.find(1)

您可以添加如下选项:

@user.choices.create(:interest => @interest, :score => 4)

您也可以在控制器中执行以下操作:

def create
  @choice = @user.choices.build(params[:choice])

  if @choice.save
    # saved
  else
    # not saved
  end
end

这假设您的表单包含choice[:interest_id]choice[:score]

的字段