我是rails开发的初学者,我目前正致力于已经实施的市场上的增强功能,而且我被卡住了。
我想修改代码,以便在另一个名为“listing”的表的另一个属性中复制名为“custom_field_values”的表属性的内容。
我在custom_field_value模型中编写了这段代码:
before_validation :set_date_value
def set_date_value
@current_listing = Listing.where(id: listing_id).select(:valid_until)
@current_listing= date_value
end
但出了点问题,因为表值接收Null而不是内容本身。 我还尝试使用listing_controller来连接两个表并分配值,但没有任何反应,我仍然得到一个Null值。
顺便说一下,这是两个表模式:
id :integer not null, primary key
custom_field_id :integer
listing_id :integer
text_value :text(65535)
numeric_value :float(24)
date_value :datetime
created_at :datetime not null
updated_at :datetime not null
type :string(255)
id :integer not null, primary key
uuid :binary(16) not null
community_id :integer not null
author_id :string(255)
category_old :string(255)
title :string(255)
times_viewed :integer default(0)
language :string(255)
created_at :datetime
updates_email_at :datetime
updated_at :datetime
last_modified :datetime
sort_date :datetime
listing_type_old :string(255)
description :text(65535)
origin :string(255)
destination :string(255)
valid_until :datetime
delta :boolean default(TRUE), not null
open :boolean default(TRUE)
share_type_old :string(255)
privacy :string(255) default("private")
comments_count :integer default(0)
subcategory_old :string(255)
old_category_id :integer
category_id :integer
share_type_id :integer
listing_shape_id :integer
transaction_process_id :integer
shape_name_tr_key :string(255)
action_button_tr_key :string(255)
price_cents :integer
currency :string(255)
quantity :string(255)
unit_type :string(32)
quantity_selector :string(32)
unit_tr_key :string(64)
unit_selector_tr_key :string(64)
deleted :boolean default(FALSE)
require_shipping_address :boolean default(FALSE)
pickup_enabled :boolean default(FALSE)
shipping_price_cents :integer
shipping_price_additional_cents :integer
availability :string(32) default("none")
答案 0 :(得分:0)
这里是修正,使用find而不是在哪里找到一条记录,在哪里会返回记录集合,并在模型内部访问列字段使用self
before_validation :set_date_value
def set_date_value
@current_listing = Listing.find_by(id: self.listing_id)
# if find successfully (not nil)
if @current_listing
@current_listing.valid_until = self.date_value
end
end
答案 1 :(得分:0)
我的解决方案是你应该使用列表关联而不是单独查询const createBoard = ({width,height}) =>
Array.from(
{length: height},
(...b) => Array.from(
{length: width},
(...a) =>checkEdge(...a, ...b, width, height)
)
);
并使用实例变量来保存它。
Listing
这将使用def set_date_value
listing.valid_until = date_value if listing
end
关联来设置valid_until列,并且更简洁。