Rails - объединить таблицу с атрибутами (HABTM + Through). Но как мне создавать / удалять записи? - PullRequest
0 голосов
/ 07 января 2011

У меня есть пользовательская модель и модель интереса, объединенная таблицей соединений под названием Выбор (подробности ниже). Я использую отношения HABTM с помощью through, поскольку у меня также есть атрибут в таблице соединений.

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 Ответ

2 голосов
/ 07 января 2011

У вас есть пара опций для добавления выбора, но, вероятно, наиболее разумно было бы добавить варианты путем выбора области действия для экземпляра пользователя:

Предполагая, что:

@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]

...