【发布时间】:2016-04-06 07:16:22
【问题描述】:
我有一个早期项目,我试图在组织成为问题之前对其进行命名,遵循我能找到的关于命名空间的最清晰和最新的post。
但它并不像我希望的那样神奇。如何在命名空间中生成一个功能性的 Scaffold?我相信这是一个多元与单一的问题。
例子:
words
languages
definitions
users
生成:
rails g scaffold Words/Language name:string
rails g scaffold Words/Definition name:string
rails g scaffold Word name:string language:references definition:references user:references
在上述之后,word.language 有一个例外,但word.user 没有:
irb(main)> word = Word.find(1)
Word Load (0.3ms) SELECT "words".* FROM "words" WHERE "words"."id" = ? LIMIT 1 [["id", 1]]
=> #<Word id: 1, name: "Hello", language_id: 1, definition_id: 1, user_id: 1>
irb(main)> word.user
User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]]
=> #<User id: 1, name: "admin">
irb(main)> word.language
NameError: uninitialized constant Word::Language
Rails 生成两个模型,word.rb 和 words.rb:
app/models/word.rb
class Word < ActiveRecord::Base
belongs_to :language
belongs_to :definition
belongs_to :user
end
app/models/words.rb
module Words
def self.table_name_prefix
'words_'
end
end
如何使用命名空间生成的脚手架解决单数与复数的问题?
【问题讨论】:
-
脚手架生成器是否旨在支持命名空间?
标签: ruby-on-rails ruby ruby-on-rails-3 namespaces