Ruby Rails拥有并且属于许多&;有很多:通过脚手架
有没有一种方法可以为具有has_和_besive_to _many或has_many:through关系的Rails模型生成脚手架?如果没有,是否有一个发展的原因,为什么这个功能的一些基本形式没有被包括在内?Rails要求开发人员生成和编辑“自定义”的“联接表迁移”。对细节的必要关注是为了提醒Rails开发人员一些重要事实,还是这只是Rails如何成为“正在进行的工作”的一个示例 快速Stackoverflow搜索:Ruby Rails拥有并且属于许多&;有很多:通过脚手架,ruby,ruby-on-rails-3,scaffolding,Ruby,Ruby On Rails 3,Scaffolding,有没有一种方法可以为具有has_和_besive_to _many或has_many:through关系的Rails模型生成脚手架?如果没有,是否有一个发展的原因,为什么这个功能的一些基本形式没有被包括在内?Rails要求开发人员生成和编辑“自定义”的“联接表迁移”。对细节的必要关注是为了提醒Rails开发人员一些重要事实,还是这只是Rails如何成为“正在进行的工作”的一个示例 快速Stackoverflow搜索: "has_and_belongs_to_many" yields 821 qu
"has_and_belongs_to_many" yields 821 questions
"has_many :through" yields 933 questions
。。。其中很多都是从“我该怎么做…”开始的,所以这个话题似乎并不琐碎,也与So用户相关。我想我想知道为什么它没有受到关注。事情是否比看上去更复杂?Rails的功能集似乎非常广泛。我一直想知道为什么省略了连接表关联的脚手架
请将答案集中在上面的断言或“include语句”上,如“脚手架必须包含…”或“rails生成脚本需要…”
谢谢!我喜欢你的问题,我一直想知道为什么Rails中没有包含这一点(而且我怀疑它没有作为Gem提供)。下面是一些原因,说明这可能是一个问题。我将用
程序集
和零件
在典型示例中进行解释
- 将现有名称复制到新名称
- 用新的覆盖现有的
has-many:to
(应该类似于has-many,并且属于多个
),您必须执行以下操作:
- 添加创建联接表的迁移
==>应可通过以下操作进行脚手架搭建:
rails g scaffold\u hmt组装件
- 为该联接模型添加模型 ==>应可通过前一个脚手架进行脚手架搭建
- 更改现有模型以包括以下行:
assembly.rb:
part.rb:有_多个‘组件_零件’;有_多个:零件,:通过=>‘组件_零件’
==>所以不可能有脚手架有_多个‘组件_零件’;有_多个:组件,:通过=>‘组件_零件’
- 如何处理视图是一个非常开放的问题。有一些例子说明了如何处理视图,但这并不是一个简单的问题,也没有一种技术在所有情况下都能很好地工作。我确实认为,不同的模式可以实现为脚手架模板(例如,使用复选框或多选列表或完成文本输入)。问题与
中有许多视图的问题相同
我昨天试图提出一个局部解决方案,您可以看看。它的工作原理如下:
scaffold\u hmt
(代表has\u many:through
)的内容复制到rails应用程序目录lib/generators
rails g scaffold\u hmt Assembly Part
- 连接表的迁移
- 联接表的模型
- 型号
assembly.rb
- 型号
part.rb
c:\apps\ruby\rails3\minds>rails generate scaffold_hmt Assembly Part
create db/migrate/20111011135944_create_assemblies_parts.rb
create app/models/assemblies_part.rb
Try to insert into file: app/models/assembly.rb the following statements:
has_many :assemblies_parts
has_many :parts, :through => :assemblies_parts
insert app/models/assembly.rb
Try to insert into file: app/models/part.rb the following statements:
has_many :assemblies_parts
has_many :assemblies, :through => :assemblies_parts
insert app/models/part.rb
尝试一下,看看这是否会对您有所帮助。谢谢您的回复。因此,一个问题是支持现有文件的更改。这会使生成脚手架的不可逆三步过程成为可能吗?类似于(1)rails生成MyModels和my_列(2)rake db:migrate(3)rake joinHack MyModels MyJoinTable…通过第(3)步对您提到的文件进行更改?我想这仍然会留下一个悬而未决的问题。拥有一些非常基本的视图是否有价值?可能在视图或模型代码中包含一条注释性免责声明,即“这只是使用废话的一种方法。”。有关此主题的更多信息,请参阅此Railsguide。“我想第(1)步也可以/应该声明类似这样的内容,“要完成这三步流程,现在做这个和那个。”。请注意,步骤(3)代表一个不可逆转的步骤。祝您有个美好的一天。“在GitHub添加了示例实现,它实现了部分解决方案。我最近添加了一个示例应用程序,其中没有
的关系,并且修复了生成器中的一些错误。它现在应该可以使用了。我希望它现在在Rails 5中可以工作:Rails生成模型公司名称:string industry:has_and_-behing_-to_-many
,这将把has_and_-behing_-to_-many::industry
添加到公司
模型中。