我有以下型號:的Rails:活動記錄問題
require 'books_projects.rb'
class Project < ActiveRecord::Base
has_many :book_to_projects
has_many :books, :through => :book_to_projects
end
require 'books_projects.rb'
class Book < ActiveRecord::Base
has_many :book_to_projects
has_many :projects, :through => :book_to_projects
end
books_projects.rb:
class BookToProject < ActiveRecord::Base
set_table_name "books_projects"
belongs_to :book
belongs_to :project
end
在我的項目控制,我試圖做到這一點:
@projects = Project.find(:all, :include => [:books])
我的希望是獲得一個嵌套的數據結構,如下所示:
projects: [
{
..,
books: [
{
..
},
{
..
}
]
}
]
這不起作用。我怎樣才能做到這一點?
另外,上述模型關係是否需要在項目和書中使用has_and_belongs_to_many
而不是指定連接表?
在此先感謝!
編輯1: 我沒有看法。這僅起到REST服務的作用。我正在做以下操作:
def index
@projects = Project.find(:all, :include => [:books])
respond_to do |format|
format.xml { render :xml => @projects }
format.json { render :json => @projects}
end
end
這不會產生我正在查找的輸出(如上所述)。
好吧,它應該工作!在你的視圖中嘗試<%= debug @project%>,你會看到你的對象的yaml表示,包括書籍 – charlysisto
如果'book_projects'沒有任何其他屬性,那麼是的,使用'has_and_belongs_to_many'。此外,我同意charlysisto:它*應該*工作?什麼不正確? – Mischa
我可以問你爲什麼「違背糧食」?爲什麼你有一個定義'BookToProject'的文件'book_projects.rb',但表名是'book_projects'?你爲什麼要從其他兩個模型中獲取這個文件?你只需要在項目的某個地方需要它,但爲什麼你需要呢? – theIV