我開始在Rails中使用數據庫關聯的全部(奇妙)概念,但是我遇到了問題,因爲我正在使用不符合Rails標準的現有數據庫並且無法計算了解如何命名這些關聯。有幾個類似的帖子,但如下我不能換我的頭周圍命名爲我的具體情況是:Ruby on Rails協會澄清
table book with book.formatId looks up values in book_format.id
所以外鍵book.formatId
我的車型被命名爲: Book和BookFormat(我讀過你使用camelCase,當你的表用下劃線分隔時)。
下Book模型我有這樣的:
has_one :bookFormat, :foreign_key => 'book_format.id' # not sure if this format table.field is correct or I have to use something else here. Also not sure about the bookFormat, should it be BookFormat or bookformat?
的BookFormat模型具有這樣的:
belongs_to :book
但是,當我嘗試做
book = Book.first
book.bookFormat.empty?
我得到的錯誤未找到bookFormat方法。所以顯然有些問題,但我無法弄清楚在哪裏。
問題的第二部分是使用多對多的關係。例如:
表 書,book_subjects,book_subjects2title
book_subjects.id => book_subjects2title.pId book.id => book_subjects2title.bookId
我Apress出版讀取開始Rails 3的書(這是一本很棒的書),但這並不是很清楚,或者我只是沒有得到它。
謝謝。
我會嘗試一下你的建議,但是隻是想說,爲了防止rails使用你的複數,把它放到config/application.rb文件中:'config.active_record.pluralize_table_names = false'並且工作時不需要明確設置表名。在leas Book.first的作品中,查詢正確的表格。 – kakubei
我按照你的建議完成了,但我仍然收到找不到方法的錯誤。因此,澄清,'belongs_to:book_format'(book_format是表的名稱,是嗎?), 然後我使用call book.bookformat.empty?是BoookFormat,book_format還是bookformat?我在這裏使用了什麼? – kakubei
對於在何處使用表名以及在何處使用類名稱,我仍然很困惑,爲什麼我們使用小寫的類名(如果它們實際上是用大寫字母來創建的)。我知道,如果你遵循rails的準則,併爲你創建表格,那麼一切似乎都會更好,但不幸的是,對於我來說,我不得不與現有的數據庫搏鬥。 – kakubei