gpt4 book ai didi

Ruby on Rails 将事件记录中的属性添加到现有对象

转载 作者:行者123 更新时间:2023-12-05 09:19:34 27 4
gpt4 key购买 nike

起初我的问题似乎很简单,但我还没有解决它,所以我从我的数据库中获取了一些记录,然后我需要为每个检索到的记录添加一个属性。我尝试如下我的模型

class Lesson < ActiveRecord::Base
attr_reader :palindrome #getter
attr_writer :palindrome #setter
attr_accessor :palindrome #both

belongs_to :schedule
belongs_to :user
has_one :schedule


end

在我的 Controller 中我这样做是为了添加它

def index
@lessons = Lesson.select(:id,:start_date,:users_allowed,:name,:users_enrolled).where(start_date: (Time.now.beginning_of_week.beginning_of_day)..Time.now.end_of_week.end_of_day).order(start_date: :desc)
@schedules = Array(Schedule.where(user_id: 50).pluck(:lesson_id))

day_id = params[:id].to_i
@day_1 = []
@day_2 = []
@day_3 = []
@day_4 = []
@day_5 = []
@day_6 = []
if day_id.present?
@lessons.each do |lesson|
lesson.palindrome = 'TEST'
case lesson.start_date.wday
when 1
@day_1 << lesson
when 2
@day_2 << lesson
when 3
@day_3 << lesson
when 4
@day_4 << lesson
when 5
@day_5 << lesson
when 6
@day_6 << lesson
end
end
case day_id
when 1
@lessons = @day_1
when 2
@lessons = @day_2
when 3
@lessons = @day_3
when 4
@lessons = @day_4
when 5
@lessons = @day_5
when 6
@lessons = @day_6
end
render json: @lessons
end
end

但是我收到了这个回复

[
{
"id": 7019,
"start_date": "2016-10-24T20:30:00.000Z",
"users_allowed": 4,
"name": "Power - Funcional",
"users_enrolled": 2
},
{
"id": 7018,
"start_date": "2016-10-24T20:00:00.000Z",
"users_allowed": 4,
"name": "Power - Funcional",
"users_enrolled": 0
}]

如您所见,没有返回我分配的新属性,但是我尝试通过调用

render json: @lessons[0].palindrome

它确实返回了属性的值,我的问题是当我渲染整个对象时我该如何返回新的 attr 值?非常感谢

最佳答案

您正在传递一个 ActiveRecord 对象数组,而不是散列。 json 转换器将解析模型的属性而不是分配给这些对象的自定义变量。尝试将模型转换为散列:

lesson = lesson.attributes
lesson['palindrome'] = 'TEST'

还要考虑重构你的代码,我认为你不需要那些 case 语句,也不需要 @dayx 变量,它们会让人难以理解。

关于Ruby on Rails 将事件记录中的属性添加到现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com