첫 번째 질문은 여기에 있습니다! 내 사용자에게 '핵심 회사'를 지정하려고합니다. 이는 many-to-many
리치 조인 테이블에 있습니다. 이 표에는 new
, key
, active
등과 같은 속성이 있습니다. 나는 회사를 긴 목록의 사용자에게 할당하고 그 사용자는 SimpleForm
을 사용하려고합니다.부자 관계 속성을 기반으로 한 연결 제한
풍부한 관계에있는 특성을 기반으로 연관 관계를 필터링하고 제한하려는 것을 제외하면 모든 것이 작동합니다. 각 사용자에 대해 회사 관계가 있지만 모두가 key
- 관계 또는 new
- 관계입니다. 나는 단지 연관이 key
인 것을 보여주고 다른 것들은 만지지 않기를 바란다. 또한이 회사를 사용자에게 할당 할 때 active
을 true
으로 설정하려고합니다. 내 코드는 이제 다음과 같습니다
user.rb
class User < ActiveRecord::Base
has_many :company_user_relationships
has_many :companies, through: :company_user_relationships
company.rb
class Company < ActiveRecord::Base
has_many :company_user_relationships
has_many :users, through: :company_user_relationships
schema.rb
create_table "company_user_relationships", force: true do |t|
t.integer "company_id"
t.integer "user_id"
t.boolean "key"
t.boolean "active"
t.datetime "last_contacted"
t.string "status_comment"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "status"
t.boolean "new"
end
users_controller.rb
def assign_key_companies
User.update(params[:users].keys, params[:users].values)
redirect_to(:back)
end
보기 나는 기본적으로 만 기록을 갱신 할 때 항상 true
에 key
-field을 넣어 user.companies.where(key: true)
과 SQL COMMIT
을 보여주고 싶은
= form_for :user_companies,
url: assign_key_companies_users_path,
html: {:method => :put} do |f|
- users.each do |user|
= simple_fields_for "users[]", user do |u|
tr
td.col-md-4
= "#{user.first_name} #{user.last_name}"
td.col-md-8
= u.association :companies, label: false, collection: @key_company_candidates,
input_html: {data: {placeholder: " Assign key companies"}, class: 'chosen-select'}
= submit_tag "Save key companies", class: "btn btn-success pull-right"
.
내가 원하는 연결에만 영향을 미치도록 필터링하는 방법은 무엇입니까?
고맙습니다! 키 관계 만 보여준 has_many 관계를 추가하는 방법을 찾았습니다. 첫 번째 예제와 비슷합니다. 레일 매직을 통해 질량을 지정할 때 자동으로 모든 속성을 자동으로 설정합니다. :) – feggak