Tag: 模型

轨。 保存时更新模型属性

认为这是一项简单的任务,但我对这个问题有点担心: 想要在模型保存时更新模型的其中一个属性,从而在模型中进行回调: after_save:calculate_and_save_budget_contingency def calculate_and_save_budget_contingency self.total_contingency = self.budget_contingency + self.risk_contingency self.save #=>这不起作用…. self.update_attribute:budget_contingency,(self.budget_accuracy * self.budget_estimate)/ 1 结束 并且网络服务器回显消息ActiveRecord::StatementInvalid (SystemStackError: stack level too deep: INSERT INTO “versions” 这基本上告诉我有一个infite循环保存到模型, after_save然后我们再次保存模型…进入另一个saving模型的循环 这个模型属性计算只是停留在这个时间点。 如果有人遇到过这个问题,并且有一个漂亮的俏皮/ rails解决方案,请在下面给我发一条消息,谢谢

轨。 在开发模式下预加载类

在开发模式下预加载Rails模型的正确方法是什么? 背景:Rails 2.2,memcahe as cache store。 当Rails首先在生产模式下启动时,它会预加载并缓存所有模型。 在开发模式下,它使用laizy加载。 这就是为什么我们将任何模型存储到rails缓存中,例如,在app的下一个loadind上的Rails.cache.write(“key”,User.find(0)),当我们尝试执行Rails.cache.read(“key” )memcache fire,即User是未知的类/模块。 在这种情况下,预加载课程的正确方法是什么?

Rails db:seed error“undefined method`finder_needs_type_condition?’ 为零:NilClass“

尝试填充我的sqlite数据库时遇到问题。 关于特定错误“finder_needs_type_condition?”的信息不多。 我可以找到,但我对Rails没有多少经验,甚至怀疑问题可能在哪里。 模型: class Character < ActiveRecord::Base validates :user_id, :name, :class, presence: true end 控制器: class CharactersController < ApplicationController before_action :authenticate_user! respond_to :json @user_id = current_user[:id] def index @characters = Character.all end def show @character = Character.find(params[:id]) end def new @character = Character.new end def create @characters = Character.all @character = Character.create(character_params) end private […]

在rubyonrails中,如何从ActiveRecord :: Relation对象获取关联的模型类?

假设我有一个模型: class Post end posts = Post.where(***) puts posts.class # => ActiveRecord::Relation 那么如何通过变量’posts’获取模型类名,也许是一些名为model_class_name的方法: put posts.model_class_name#=>发布 谢谢 :)

Rails模型的默认条件

我有一个模型,其中有一个名为deleted的字段,用于标记那些已删除的项目。 所以通常我只想查询那些deleted = false项目,并在某些特殊情况下列出那些已删除的项目以进行恢复。 有可能吗? 我现在能做的就是使用命名范围:conditions => {:deleted => false} 有没有更好的方法来做到这一点,当我做Item.other_named_scope ,我可以找到所有那些未删除的项目?

Rails 4 – 仅在当前密码正确时才允许更改密码

在我的应用中,用户可以编辑他们的个人资料信息 在编辑配置文件表单上,用户可以更改所有字段(名称,标题等)。 在同一表单上有三个字段: current_password , password和password_confirmation 。 我使用bcrypt的has_secure_passwordfunction进行密码validation。 我根本不使用Devise。 我希望用户只有在提供了正确的当前密码后才能更改密码。 我之前在使用Users控制器的update方法中使用了以下代码: # Check if the user tried changing his/her password and CANNOT be authenticated with the entered current password if !the_params[:password].blank? && !@user.authenticate(the_params[:current_password]) # Add an error that states the user’s current password is incorrect @user.errors.add(:base, “Current password is incorrect.”) else # Try to update […]

在db中没有相应列的rails模型属性

我有一些不需要任何持久性的rails模型,但我想rails认为模型实际上有属性x,y,z所以当在控制器中调用类似to_json的方法时我会免费获得它们。 例如, class ModelWithoutTableColumns << ActiveRecord::Base def x return "Custom stuff here" end Table“ModelWithoutTable”的数据库中没有列x(对于稍微有点混乱的名称感到抱歉!) 任何人都知道如何解决这个问题?

反向显示博客条目和评论,Ruby on Rails

我是rails的新手,所以可以在这里使用一些帮助。 我已经按照几个教程创建了一个带有评论的博客,甚至还有一些AJAX的铃声和口哨,而且我坚持一些我希望很容易的东西。 博客和评论的默认显示是列出最早的第一个。 如何将其反转以显示最新条目和最新评论。 不知道这是否是控制器或型号的function。 我做了一些自定义,所以这里是控制器.rb文件的代码,如果它有帮助。 评论控制器 class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.create!(params[:comment]) respond_to do |format| format.html { redirect_to @post} format.js end end end POSTS控制器 class PostsController [:index, :show] # GET /posts # GET /posts.xml def index @posts = Post.all(:include => :comments) respond_to do |format| format.html # index.html.erb format.xml […]

在Rails中,如何更新模型中的表单字段?

让我假装我想将我指定的所有字段设置为=“frog” 在模型中,我可以使用以下方法手动设置每个: self.field1 = ‘frog’ self.desc_field = ‘frog’ self.fieldx = ‘frog’ etc…. 但是如何通过将字段名称放在数组中呢? 当我尝试 fields_array=[‘field1′,’desc_field’,’fieldx’] fields_array.each { |field| self.field = ‘frog’ } 这是行不通的。 有什么建议?

Rails:实现可重用的Comment模型

我有一个评论模型,我也有一个video和照片模型。 现在,我想让我的video和照片模型有have_many评论,但这意味着我的评论模型必须拥有一个belongs to :video和一个belongs_to :model (以及数据库中每个模型的外键)。 现在说我在同一个应用程序中创建了一个Post模型,我希望它有很多注释,这意味着我必须将belongs_to :post添加到我的Comment类中。 在rails中有更好的方法来实现Comment模型,当有许多其他模型与它有关联时,或者这是如何完成的? 任何建议将不胜感激。