2014-01-09 5 views
1

В моем приложении rails пользователь может создавать Designs.Rails Создать «Сборник» сообщений

Design.rb

belongs_to :user 

User.rb

has_many :designs 

Я пытаюсь создать новую модель Look так что пользователь может создать внешний вид. Как я предполагаю, что это работает, когда пользователь переходит к /looks/new, у них есть список всех предложенных им проектов (которые у меня есть, которые уже установили эту переменную) в формате таблицы, а правый столбец - это флажки, где пользователь могут пройти и проверить некоторые из этих проектов и нажать «Создать». Все проверки, которые были проверены, будут частью этого Look.

Как я раньше не делал этого, мне нужна помощь в выполнении этого во всех аспектах MVC.

Look.rb

has_many :designs 

Design.rb

belongs_to :looks # ??? Would the model be something different since technically when you create a design it doesn't belong to a look. 

Смотрит Controller

def new 
    @designs = @user.favorites #This get's me all the designs that the particular user has favorited 
    @look = Look.new # ??? Again, as I haven't set this sort of relation up before, I'm unsure. 
end 

Пожалуйста, дайте мне знать, какой-либо другой код, я могу предоставить, чтобы помочь. Я даже могу сделать этот звук более сложным, чем он есть.

ответ

1

Эта конфигурация должна работать для вас Джастина:

class User < ActiveRecord::Base 
    has_many :designs 
    has_many :looks, through: :designs 
end 

class Design < ActiveRecord::Base 
    belongs_to :user 
    has_many :designs_looks 
    has_many :looks, through: :designs_looks 
end 

class Look < ActiveRecord::Base 
    has_many :designs_looks 
    has_many :designs, through: :designs_looks 
end 

class DesignsLook < ActiveRecord::Base 
    belongs_to :design 
    belongs_to :look 
    validates :design_id, presence: true 
    validates :look_id, presence: true 
end 

Я не знаю, что вы хотите сделать в будущем, но вы могли бы рассмотреть вопрос о создании в user_id на модели DesignsLook, так что вы не будете требуется сложный запрос соединения для извлечения всех Looks of User. А также вы реализуете общие проекты со всеми пользователями

+0

Спасибо за ответ как всегда @MrYoshiji. Почему вы добавили модель DesignsLook? –

+0

Это модель объединения, чтобы представить отношение многих к многим между Deisgns и Looks. – MrYoshiji

+0

О, хорошо. Ну, спасибо тонну! Похоже, у меня впереди много работы :) –

0

У вашего пользователя много дизайнов. Новые взгляды могут иметь много конструкций. И дизайн может принадлежать МНОГО взглядам, пользователям. Пахнет has many ..., :through http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

class User 
    has_many :designs, through: :design_possesion 
end 
class Look 
    has_many :designs, through: :look_designs 
end 
class Design 
    has_many :look_designs, :design_possesion 
end 

Конечно, вы должны создать соответствующие таблицы.

+0

Но для какой модели? –

Смежные вопросы