2013-04-29 3 views
0

Если у меня установлены следующие модели, это подходящий способ добавить атрибут: foo в таблицу авторства, которая является специфичной для этого отношения, и нет других?Как отправить и получить доступ к информации во многих таблицах

class Author < ActiveRecord::Base 
    has_many :authorships 
    has_many :books, :through => :authorships 
end 

class Book < ActiveRecord::Base 
    has_many :authorships 
    has_many :authors, :through => :authorships 
end 

class Authorship < ActiveRecord::Base 
    attr_accessible :foo 

    belongs_to :author 
    belongs_to :book 
end 

Какой запрос вернет это: атрибут foo, или есть лучший способ сделать это?

ответ

0

Весьма целесообразно добавлять атрибуты к промежуточной модели при использовании has_many :through. Это одна из основных причин использования этого шаблона вместо has_and_belongs_to_many.

Кроме того, что вы показали (attr_accessible), вам также необходимо на самом деле добавить атрибут в таблицу с помощью миграции:

class AddFooToAuthorships < ActiveRecord::Migration 
    def change 
    add_column :authorships, :foo, :text 
    end 
end 

Что касается запроса ... Я предполагаю, что это зависит от того, что вы» re пытающийся сделать. @book.authorships.pluck(:foo) вернет все значения foo в авторствах, связанных с определенной книгой, например.

+0

Я уже выполнил миграцию, я просто не знал, как получить доступ к информации, или если это был правильный способ хранения информации. Ваш ответ дал всю ясность, в которой я нуждался, спасибо! – Sean

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