构建不适用于多态关联中的has_one关联

时间:2018-07-13 03:50:28

标签: ruby-on-rails-5

我有一个Rails 5应用,正在尝试从多态关联中为has_one工作。

我有乐队->普通->社交

公共是多态关联

band.rb
class Band < ApplicationRecord
   has_one :common, as: :commonable, :dependent => :destroy
   belongs_to :genre, optional: true
   has_many :events, inverse_of: 'band'

common.rb

class Common < ApplicationRecord
  belongs_to :commonable, polymorphic: true 
  has_one :social, dependent: :destroy, inverse_of: 'common'
  accepts_nested_attributes_for :social

social.rb

class Social < ApplicationRecord
  belongs_to :common, optional: true
end

band.controller

  # GET /bands/1/edit
  def edit
    @band = Band.find(params[:id])
    @commonable = @band
    @common = @commonable.common
  end

(我正在编辑,所以我要显示该部分)

通用控制器

      # GET /commons/1/edit
      def edit
          common.build_social if @common.social.nil?
      end
...
    :commentable_type, 
        :social_id => [],
        social_attributes: [:site, 
       :link, 
       :active,
       :facebook,

       :google_places])

常用表格(除社交功能外,表格中的其他所有内容都有效

 <div class="field">
    <%= form.label :lon %>
    <%= form.text_field :lon, id: :common_lon %>
  </div>
<hr>
    <%= form.fields_for :social  do |social| %>

      <div class="field">
        <%= social.label :facebook %>
        <%= social.text_field :facebook , id: :social_facebook %>
      </div>

    <% end %>
<hr>
  <div class="field">
    <%= form.label :admin_notes %>
    <%= form.text_area :admin_notes, id: :common_admin_notes %>
  </div>

如果我在手动创建社交记录的记录上(通过PGAdmin,我看到了社交记录。我遇到的问题是试图为新乐队建立记录,或者我正在编辑社交乐队,记录丢失或未创建

如果我进入控制台并尝试手动进行构建(该表单中的<%console%>,我会得到社交记录的nil ID。这是我正在编辑的乐队/普通乐队的地方,相应的社交记录

>>  @band.common.build_social
=> #<Social id: nil, site: nil, active: nil, created_at: nil, updated_at: nil, facebook: nil,

0 个答案:

没有答案