Witam!
Mam car_model, car_marke polaczone ze soba.
class CarMarke < ActiveRecord::Base
attr_accessible :name
has_many :car_models
end
class CarModel < ActiveRecord::Base
attr_accessible :name, :car_marke_id
belongs_to :car_marke
validates :name, :car_marke_id, presence: true
end
Mam tez Posts ktory chcialbym polaczyc z car model, Czyli tworzac posta wybieram najpierw marke potem model samochodu. Wydaje mi sie ze wystarczy do tabeli Posts dodac car_model_id, jaka powinna byc asocjacja? Poniewaz jeden post powinien miec jeden samochod
class Post < ActiveRecord::Base
has_one :car_model, through: :car_marke
end
przede wszystkim nie uzywaj attr_accessible, w rails 4 ta funkcjonalność jest w kontrolerze.
Dopisz do modelu Post has_one :car_marke, poza tym nie ma po co dorzucac do tabeli car_model_id, ta asocjacja jest pośrednia
A has_one to nie jest przypadkiem dla relacji jeden-jeden? Jeśli Post może mieć jeden model ale ten sam model może występować w wielu postach (tego nie dopisałeś), to raczej będzie belongs_to.
Wtedy masz np. @my_first_post.model.name (a idąc dalej @my_first_post.model.marke.name).
Tworząc posta wybierasz tak naprawdę model a tylko wizualnie dokładasz jeszcze jeden krok w postaci wyboru najpierw marki.
[quote=torrance]przede wszystkim nie uzywaj attr_accessible, w rails 4 ta funkcjonalność jest w kontrolerze.
Dopisz do modelu Post has_one :car_marke, poza tym nie ma po co dorzucac do tabeli car_model_id, ta asocjacja jest pośrednia[/quote]
Dzięki tutaj wykorzystuje Rails 3.2.14,
[quote=torrance]A has_one to nie jest przypadkiem dla relacji jeden-jeden? Jeśli Post może mieć jeden model ale ten sam model może występować w wielu postach (tego nie dopisałeś), to raczej będzie belongs_to.
Wtedy masz np. @my_first_post.model.name (a idąc dalej @my_first_post.model.marke.name).
Tworząc posta wybierasz tak naprawdę model a tylko wizualnie dokładasz jeszcze jeden krok w postaci wyboru najpierw marki.[/quote]
Masz rację powinno być belongs_to.