首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Rails在has_many上添加附加属性

通过Rails在has_many上添加附加属性
EN

Stack Overflow用户
提问于 2020-10-21 03:51:49
回答 1查看 69关注 0票数 0

我已经建立了以下关联:

代码语言:javascript
复制
class BookLaunch < ApplicationRecord
  has_many :book_launch_locations, dependent: :destroy
  has_many :stores, through: :book_launch_locations
    
....

class Store < ApplicationRecord

  has_many :book_launch_locations
  has_many :book_launch, through: :book_launch_locations

....

class BookLaunchLocation < ApplicationRecord
  belongs_to :book_launch, :touch => true
  belongs_to :store
end

BookLaunchLocation有一个名为book_price的属性。

代码语言:javascript
复制
  create_table "book_launch_locations", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
    t.integer "book_launch_id", null: false
    t.integer "store_id", null: false
    t.integer "book_price", default: 1, null: false
    ...
    t.index ["book_launch_id", "store_id"], name: "pair_uniqueness", unique: true
    t.index ["book_launch_id"], name: "index_book_launch_locations_on_book_launch_id"
    t.index ["store_id"], name: "index_book_launch_locations_on_store_id"
  end 

我想将book_price添加到BookLaunch模型中的商店,这样当我调用@book_launch.stores时,它将拥有商店的所有属性+ book_price属性。

这个是可能的吗?

我使用fastJsonApi命名它,如下所示:

代码语言:javascript
复制
    options = {
      include: [:book_launch, :'book_launch.properties']}
    json = Api::launchSummarySerializer.new(summaryData, options).serialized_json

    render json: json
EN

回答 1

Stack Overflow用户

发布于 2020-10-21 04:07:29

如果您想创建一个只包含两个以上外键列的连接模型行,则需要显式地而不是隐式地创建它。

代码语言:javascript
复制
store = Store.first
book_launch = BookLaunch.first

BookLaunchLocation.create(
  store: store,
  book_launch: book_launch,
  price: 999
)

# or
store.book_launch_locations.create(
  book_launch: book_launch,
  price: 999
)

# or
book_launch.book_launch_locations.create(
  store: store,
  price: 999
)

隐式创建联接模型行是在您通过间接关联创建它时:

代码语言:javascript
复制
Store.first.book_launches.create!(attributes)
BookLaunch.first.stores.create!(attributes)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64452393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档