LINUX.ORG.RU

[rails] Как писать в промежуточную таблицу при связи has_many :through?


0

1

Модели:

class Item < ActiveRecord::Base
  has_many :effect_per_items
  has_many :effects, :through => :effect_per_items
end

class Effect < ActiveRecord::Base
  has_many :effect_per_items
  has_many :items, :through => :effect_per_items
end

class EffectPerItem < ActiveRecord::Base
  belongs_to :item
  belongs_to :effect
end

Промежуточная таблица:

    t.integer "item_id"
    t.integer "effect_id"
    t.integer "rating"

Код:

irb> i = Item.new("name"=>"lsd", "category_id"=>"1", "duration_min"=>"1", "duration_max"=>"2", "peak_min"=>"3", "peak_max"=>"4", "plateau_min"=>"5", "plateau_max"=>"6", "tolerance_min"=>"7", "tolerance_max"=>"8", "weight_min"=>"9", "weight_max"=>"10")
=> #<Item id: nil, name: "lsd", duration_min: 1, duration_max: 2, peak_min: 3, peak_max: 4, plateau_min: 5, plateau_max: 6, tolerance_min: 7, tolerance_max: 8, weight_min: 9, weight_max: 10, rating: nil, category_id: 1>
irb> i.effect_ids = ["1", "2"]
  Effect Load (0.1ms)  SELECT `effects`.* FROM `effects` WHERE `effects`.`id` IN (1, 2)
   (0.1ms)  BEGIN
   (0.0ms)  COMMIT
=> ["1", "2"]
irb> i.effect_per_items
=> []

Затык в том, что я не знаю как писать в поле rating промежуточной таблицы. Объекты item и effect есть, но в промежуточной таблице пусто. Пусто до тех пор, пока не произойдёт сохранение объекта item.


Точнее, как это красиво сделать?

daris ()

Решения с такой постановкой вопроса не существует.

daris ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.