小编j-d*_*exx的帖子

如果没有更改,则Rails保存方法

我似乎记得在某个地方读取如果没有更改属性(可能是作为活动记录脏的一部分),rails将不会提交到数据库就是这种情况?我似乎无法找到它,并且通过源代码快速查看并不是明智之举.

如果这是假的,我需要使用before_save回调,因为我想根据是否发生了更改来运行一些代码.

我假设after_save与脏数据将无法正常工作?

ruby-on-rails dirty-data

9
推荐指数
1
解决办法
6590
查看次数

友好 ID 4 使用作用域模块

我无法解决这个问题。使用文档

我有两个模型

class Region < ActiveRecord::Base
  extend FriendlyId
  has_many :pages
  friendly_id :name, :use => :slugged
end

class Page < ActiveRecord::Base

  extend FriendlyId      
  belongs_to :region
  friendly_id :name, :use => :scoped, :scope => :region
end
Run Code Online (Sandbox Code Playgroud)

根据文档,这应该可以工作。但是,当我创建一个页面时,它不会通过范围创建一个 slug,这意味着当我创建另一个同名页面时,我会收到重复索引错误。

ruby-on-rails friendly-id ruby-on-rails-3

3
推荐指数
1
解决办法
846
查看次数

处理模型中的条带错误

在模型中使用方法时,是否可以将条带错误消息呈现为anotices.这是我的控制者

def create
  @donation = @campaign.donations.create(donation_params)
    if @donation.save_with_payment
      redirect_to @campaign, notice: 'Card charged successfully.'
    else
      render :new
    end
end
Run Code Online (Sandbox Code Playgroud)

我的方法是这样的

def save_with_payment
  customer = Stripe::Customer.create(
    :email => email,
    :card  => stripe_token
  )

  charge = Stripe::Charge.create(
    :customer    => customer.id,
    :amount      => donation_amount,
    :description => 'Rails Stripe customer',
    :currency    => 'usd'
 )
end
Run Code Online (Sandbox Code Playgroud)

我注意到其他人的exmaples条纹有一个

rescue Stripe::error
 rescue Stripe::InvalidRequestError => e
Run Code Online (Sandbox Code Playgroud)

但我不知道如何抓住这些错误然后将它们放在通知中

任何帮助表示感谢

ruby ruby-on-rails stripe-payments ruby-on-rails-4

3
推荐指数
1
解决办法
673
查看次数

如何检查模型的所有属性是否都设置了值?

我目前有以下方法:

def complete?
  attributes.delete_if{|k,v| k == 'id' or k == 'user_id'}.values.each do |value|
    return false if value.blank?
  end
  true
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?我只是想知道,在我的实例中,是否已将所有属性与id和user_id区分开来.必须有更好的方法来做到这一点.

我在rails 3和ruby 1.9.3上(只是因为人们不会给出适用于较新版本的答案)

ruby ruby-on-rails ruby-on-rails-3

1
推荐指数
1
解决办法
128
查看次数