Rails 5 - 充当带有预定义标签的 Taggable On
Rails 5 - Acts as Taggable On with predefined tags
我正在尝试将 gem 上的可标记行为与我的 rails 5 应用程序一起使用。
我有一个名为 Proposal 的模型,我正在尝试使用 Randd::Fields 模型中的预定义标签对其进行标记。
在我的 proposal.rb 中,我有:
class Proposal < ApplicationRecord
acts_as_taggable
acts_as_taggable_on :randd_maturities, :randd_fields, :randd_purposes, :randd_activities
在我的提案控制器中,我已将 randd_fields_list 属性列入白名单:
params.require(:proposal).permit(:title, :randd_fields_list)
在我的 Randd::Fields table 中,我保存了一条记录:
Randd::Field.all
Randd::Field Load (0.5ms) SELECT "randd_fields".* FROM "randd_fields"
=> #<ActiveRecord::Relation [#<Randd::Field id: 1, created_at: "2016-11-26 08:38:11", updated_at: "2016-11-26 08:38:11", anz_reference: "test ref", title: "test title">]>
在控制台中,我正在尝试将预定义的 Randd::Field.title 添加到提案中:
Proposal.first.randd_field_list.add(Randd::Field.find_by(id: 1).title)
但是 - 然后当我尝试:Proposal.first.randd_field_list,我得到:
p.randd_field_list
ActsAsTaggableOn::Tagging Load (0.7ms) SELECT "taggings".* FROM "taggings" WHERE "taggings"."taggable_id" = AND "taggings"."taggable_type" = [["taggable_id", 17], ["taggable_type", "Proposal"]]
ActsAsTaggableOn::Tag Load (0.9ms) SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = AND "taggings"."taggable_type" = AND (taggings.context = 'randd_fields' AND taggings.tagger_id IS NULL) [["taggable_id", 17], ["taggable_type", "Proposal"]]
=> []
所以 - 这没有用。
如何使用 Randd::Field table 中定义的标签进行 randd_field_list 更新?
要保存标签,您需要保存 Proposal
对象:
proposal = Proposal.first
proposal.randd_field_list.add(Randd::Field.find_by(id: 1).title)
proposal.save
我正在尝试将 gem 上的可标记行为与我的 rails 5 应用程序一起使用。
我有一个名为 Proposal 的模型,我正在尝试使用 Randd::Fields 模型中的预定义标签对其进行标记。
在我的 proposal.rb 中,我有:
class Proposal < ApplicationRecord
acts_as_taggable
acts_as_taggable_on :randd_maturities, :randd_fields, :randd_purposes, :randd_activities
在我的提案控制器中,我已将 randd_fields_list 属性列入白名单:
params.require(:proposal).permit(:title, :randd_fields_list)
在我的 Randd::Fields table 中,我保存了一条记录:
Randd::Field.all
Randd::Field Load (0.5ms) SELECT "randd_fields".* FROM "randd_fields"
=> #<ActiveRecord::Relation [#<Randd::Field id: 1, created_at: "2016-11-26 08:38:11", updated_at: "2016-11-26 08:38:11", anz_reference: "test ref", title: "test title">]>
在控制台中,我正在尝试将预定义的 Randd::Field.title 添加到提案中:
Proposal.first.randd_field_list.add(Randd::Field.find_by(id: 1).title)
但是 - 然后当我尝试:Proposal.first.randd_field_list,我得到:
p.randd_field_list
ActsAsTaggableOn::Tagging Load (0.7ms) SELECT "taggings".* FROM "taggings" WHERE "taggings"."taggable_id" = AND "taggings"."taggable_type" = [["taggable_id", 17], ["taggable_type", "Proposal"]]
ActsAsTaggableOn::Tag Load (0.9ms) SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = AND "taggings"."taggable_type" = AND (taggings.context = 'randd_fields' AND taggings.tagger_id IS NULL) [["taggable_id", 17], ["taggable_type", "Proposal"]]
=> []
所以 - 这没有用。
如何使用 Randd::Field table 中定义的标签进行 randd_field_list 更新?
要保存标签,您需要保存 Proposal
对象:
proposal = Proposal.first
proposal.randd_field_list.add(Randd::Field.find_by(id: 1).title)
proposal.save