2011-06-20 13 views
5

मैं अपने डेटाबेस के अंदर कई टैग बनाने की कोशिश कर रहा हूं, क्या किसी को यह पता है कि यह मणि acts-as-taggable-on के साथ कैसे किया जाए?डीबी कैसे करें: टैग्स पर मेरे कार्य-जैसा-टैग करने योग्य टैग?

उत्पाद तालिका:

create_table :products do |t| 
    t.string :name 
    t.date :date 
    t.decimal :price, :default => 0, :precision => 10, :scale => 2 
    t.integer :user_id 
end 

और :tag_list क्षेत्र एक आभासी स्तंभActsAsTaggableOn के प्रवास के द्वारा बनाई गई है:

class ActsAsTaggableOnMigration < ActiveRecord::Migration 
    def self.up 
    create_table :tags do |t| 
     t.string :name 
    end 

    create_table :taggings do |t| 
     t.references :tag 

     # You should make sure that the column created is 
     # long enough to store the required class names. 
     t.references :taggable, :polymorphic => true 
     t.references :tagger, :polymorphic => true 

     t.string :context 

     t.datetime :created_at 
    end 

    add_index :taggings, :tag_id 
    add_index :taggings, [:taggable_id, :taggable_type, :context] 
    end 

    def self.down 
    drop_table :taggings 
    drop_table :tags 
    end 
end 

यह मेरा उत्पादों/रूप में मेरी :tag_list क्षेत्र है। html.erb

<div class="field"> 
    <%= f.label :tag_list %>: 
    <%= f.text_field :tag_list %> 
</div> 

मैं कुछ इस तरह करने की कोशिश की ....

Product.create([ 
    {:tag_list => 'Foods'}, 
    {:tag_list => 'Electronics'}, 
    {:tag_list => 'Pizza'}, 
    {:tag_list => 'Groceries'}, 
    {:tag_list => 'Walmart'}, 
    {:tag_list => 'Apples'}, 
    {:tag_list => 'Oranges'} ]) 

लेकिन आतंक विरोधी कौशल की मेरी कमी मुझसे कहता है यह गलत तरीका है और है कि मैं मदद की जरूरत है, किसी भी सुझाव?

उत्तर

10

आप अपने seeds.rb में यह कोशिश कर सकते हैं:

list = ['tag 1', 'tag 2', ...] 

list.each do |tag| 
    ActsAsTaggableOn::Tag.new(:name => tag).save 
end 

जाहिर है अपने वांछित टैग के लिए सूची सरणी के मानों को बदल देते।

नोट: यह केवल टैग तालिका को पॉप्युलेट करेगा। मुझे उम्मीद है कि आप यही चाहते थे।

आशा है कि इससे मदद मिलती है!

+0

धन्यवाद द्वारा टैग बीज सकता है, इसकी प्रशंसा करना! – LearningRoR

+0

खुशी है कि यह आपके लिए काम करता है। – Brian

0

आप कुछ इस तरह का उपयोग कर अपने बीज फाइल में कुछ परीक्षण उत्पाद बना सकते हैं:

unless Rails.env.production? 
    1..20.times.each do |n| 
    Product.create(
     name: "Some product #{n}", 
     date: Date.today - n.days, 
     price: 1_000_000 + n, 
     user: User.first 
    ) 
    end 
end 

तो तुम क्या कर इस

# ... 
    product = Product.create(
    # ... 
) 
    product.tag_list.add "tag1", "tag2" 
    product.save 
# ... 

या

# ... 
    Product.create(
    # ... 
).tap do |product| 
    product.tag_list.add "tag1", "tag2" 
    product.save 
    end 
# ... 
संबंधित मुद्दे