我缺乏rails项目的实施思路。在这一点上,似乎无法在rails中实现。
我正在使用rails框架将一种会计软件克隆到一个Web应用程序中,供小型制造公司在其不同的分支机构中跟踪他们的产品库存。
我有3种不同的型号:“产品”,“分支”& “的累加器”
class Branch < ActiveRecord::Base
has_many :accumulators
has_many :products, :through => :accumulators
end
class Product < ActiveRecord::Base
has_many :accumulators
has_many :branches, :through => :accumulators
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
end
end
class Accumulator < ActiveRecord::Base
belongs_to :product
belongs_to :branch
end
我是rails的新手,在阅读了很多很多关联后,我发现使用集合将产品添加到分支“@ branch.products&lt;&lt; Product.all”
是否有可能在分支显示视图中使用表单“number_field_tag”将多个特定产品添加到连接表中?
例如 我想在分支显示视图中使用一个表单将一个名为“花园蛋”的10个(产品)添加到(分支)“分支”到(累加器)连接表中?
答案 0 :(得分:1)
恭喜您选择:has_many, through:
,您不会后悔。
product
和branch
之间的关系是静态的吗?
或者它改变了很多?
在您的Accumulator
模型中,添加名为integer
的{{1}}字段(计数可能存在冲突)。然后,您可以为amount
创建表单,也可以添加嵌套表单,例如Cocoon。
通过这种方式,您可以Accumulators
添加Accumulators
Branch
个Product
和某个amount
。
非主题:
这是一篇关于has_many through
为什么有一些优点的文章:
http://blog.flatironschool.com/why-you-dont-need-has-and-belongs-to-many/
如果您遇到表单问题我真的可以推荐SimpleForm,对于很好的Javascript辅助字段,我建议使用Select2。
答案 1 :(得分:0)
如果表格accumulators
只需要保存两件事:product_id
和branch_id
,您就可以轻松使用has_and_belongs_to_many
个关联。
class Branch < ActiveRecord::Base
has_and_belongs_to_many :products, join_table: 'accumulators'
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :branches, join_table: 'accumulators'
end
现在,没有必要使用第三种模式。
就目前而言,如何添加关系,在这种情况下很容易:
branch = Branch.last
branch.products << Product.create # you don't need to touch the middle table.
您可以使用像jQuery Chosen Plugin这样的东西,而不是使用number_field_tag
来请求普通ID。这个插件允许你使用像输入这样的标签,并将id发送到由,
分隔的服务器。