[英]How to create a group of users (roomates) within one product (property) in 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.