我对Rails很陌生,在每个表中都有一个包含DateCreated和DateUpdated列的遗留DB。我希望在保存之前使用模型中的内置created_at和updated_at属性来设置这些字段,但我的尝试会产生: NoMethodError (未定义的方法created_at' for #<Class:0x00000102b74d20>): app/models/user.rb:45:inset_create_update_time‘app/NoMethodError/user.rb:24: in block in <class:User>'
在Rails应用程序中,如何迁移我在模型中所做的更改?例如,我知道如果我使用命令"rails g model Person name:string“创建一个模型,那么也会创建一个迁移。但是,如果在这一步之后,我转到创建的模型"Person“并添加了一个新属性,这个新属性是否会自动添加到迁移中,以便以后在数据库中保留?或者我从错误的角度看待这个问题,应该将属性添加到迁移中,然后再添加到模型中?
问候
在我的Rails 5.2.2应用程序中,我使用活动存储将logos附加到profiles
class Profile < ApplicationRecord
has_many_attached :logos
end
如何测试新的徽标是否已附加到更新时的配置文件?
现在,我正在检查我的控制器中的一个logos参数,它工作得很好:
class ProfileController < ApplicationController
def update
if params[:profile][:logos].present?
@profile.logo_ac
情况:我在数据库中有Rails模型和表,它们都在工作。我不得不重命名表名(这不是一个很小的改变,几乎是整个名称都改变了),现在我需要更改model的名称,使其与表的新名称相对应。实现我的目标的最佳方式是什么?
从我发现的东西中:rails destroy model model_name,然后生成新的模型--但我不确定它是否会按照我想要的方式工作。
如果我在数据库中创建了一个名为"number_updated",的迁移表,那么我可以使用模型名:
class NumberUpdated < ActiveRecord::Base
...
end
我问这个问题的原因是,按照惯例,rails使用复数名称作为数据库表,使用单数名称表示模型,例如,DB表名为"Cars“,模型类名为"Car”。但就我而言,名字应该是怎样的呢?
在rails中,数据库中的每个表名都必须以's'结尾以表示它是复数吗?
在Rails模型中,是否可以说只有在创建新记录时才能访问该属性,而在更新时不能访问该属性?
类似于:
class DesiredModel < ActiveRecord::Base
attr_accessible :type, :only => [:create] # this is just example
attr_accessible :type if :new_record? # this is just example
end
我在Rails 5.1API应用程序中有如下所示的Post和Comment模型
Post
class Post < ApplicationRecord
has_many :comments
end
注释
class Comment < ApplicationRecord
belongs_to :post
end
**后序列化程序(使用ActiveModel序列化程序)**
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :text, :created_at