簡體   English   中英

Rails-如何將一種產品關聯到多個用戶?

[英]Rails - How to associate one product to multiple users?

初學者的問題在這里,任何幫助不勝感激。 我有一個用戶表,一個產品表和一個名為products_users的聯接表。 通過執行以下操作,我可以在命令行中成功將產品鏈接到用戶:

u = User.where(:state => 'Oregon').first
u.products << Product.where(:search_location => 'Portland')

我的第一個問題是如何將Portland產品鏈接到所有俄勒岡州的用戶,而不僅僅是一個用戶? 如果我不添加.first,它將不起作用。

但是我的主要問題是如何讓應用程序代替我在命令行中執行此操作? 例如,我有一個表,其中包含10,000個用戶,其中有1000個用戶是:state =>'Oregon',所以我該如何創建一個管理頁面,在其中可以在狀態字段中鍵入Oregon,然后在另一個字段中鍵入Portland條目鏈接在一起並添加到聯接表中?

更新

使用siddick的代碼,我得出以下結論:

管理員

def link_product_to_user
products = Product.where(:search_location => params[:location])
User.where(:state => params[:state]).find_each do |user|
  user.products << products
end
  end

admin_controller.rb

def index    
@link = link_product_to_user
end

admin / index.html.erb

<%= form_for(@link) do |f| %>
<div class="field">
  <%= f.label :location %><br />
  <%= f.text_field :location %>
</div>
<div class="field">
  <%= f.label :state %><br />
  <%= f.text_field :state %>
</div>

<div class="actions">
  <%= f.submit %>
</div>

出現以下錯誤:

undefined local variable or method `link_product_to_user' for #<AdminController:0x007fd8e899bf10>

我應該如何定義方法才能被找到? 並且使用form_for(@link)將值提交給方法的正確方法是嗎? 謝謝

您可以使用find_each地處理記錄。

def your_action
  products = Product.where(:search_location => params[:location])
  User.where(:state => params[:state]).find_each do |user|
    user.products << products
  end if products.exists?
  ... Your code ...
end

索引視圖文件可以是:

<%= form_tag(:action => "link_product_to_user") do %>
  <div class="field">
    <%= label_tag :location %><br />
    <%= text_field_tag :location, params[:location] %>
  </div>
  <div class="field">
    <%= label_tag :state %><br />
    <%= text_field_tag :state, params[:state] %>
  </div>
  <div class="actions">
    <%= submit_tag %>
  </div>
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM