小编dee*_*dee的帖子

Gemfile中的宝石顺序是否有所不同?

您列出宝石的顺序是否重要?这两个块是等价的吗?

gem 'carrierwave'
gem 'rmagick'
Run Code Online (Sandbox Code Playgroud)

gem 'rmagick'
gem 'carrierwave'
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails gemfile

24
推荐指数
2
解决办法
4575
查看次数

如何从github获取gist的原始版本?

我需要从原始gist加载shell脚本,但我找不到获取原始URL的方法.

curl -L address-to-raw-gist.sh | bash
Run Code Online (Sandbox Code Playgroud)

gist

22
推荐指数
2
解决办法
8210
查看次数

`new`关键字如何在这个Ruby方法定义中工作?

Railscasts发布了一篇关于重构的精彩集.一种方法是将复杂的控制器逻辑移动到服务对象中,而不是将其推送到模型中.在一个服务对象中,使用以下代码:

class PasswordReset
  attr_reader :user

  def self.from_email(email)
    new User.find_by_email(email)
  end

  def self.from_token(token)
    new User.find_by_password_reset_token!(token)
  end
  ...
end
Run Code Online (Sandbox Code Playgroud)

new两个方法体中关键词的作用是什么?new User.find_by_.那有什么不同User.find_by_

这是调用代码:

  def create # controller
    password_reset = PasswordReset.from_email(params[:email])
    if password_reset.user
      password_reset.send_email
      redirect_to root_url, notice: "Email sent with password reset instructions."
    else
      redirect_to new_password_reset_url, alert: "Email address does not match a user account."
    end
  end
Run Code Online (Sandbox Code Playgroud)

还有,为什么attr_reader :user需要?

ruby refactoring ruby-on-rails

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

如何在Rails 4中通过hstore属性订购结果?

如何通过hstore属性订购查询结果?

@items = Item.includes(:product).order('products.properties @> hstore("platform")')
Run Code Online (Sandbox Code Playgroud)

原因

PG::Error: ERROR:  column "platform" does not exist
LINE 1: ...oduct_id"  ORDER BY products.properties @> hstore("platform"...
Run Code Online (Sandbox Code Playgroud)

platform 是一个hstore密钥,存储在属性列中,它是一个hstore类型.

ruby postgresql ruby-on-rails hstore

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

当邮件没有被定义时,如何在邮件程序上调用类方法?

在Rails中发送邮件时,通常可以执行以下操作:

UserMailer.password_reset(user).deliver
Run Code Online (Sandbox Code Playgroud)

但如果我们看一下,UserMailer我们可以看到:

def password_reset(user) # not self.password_reset
  # ...
end
Run Code Online (Sandbox Code Playgroud)

请注意,方法名称不带前缀self.看一下,看起来你需要首先实例化对象,如下所示.Rails如何做到这一点?

UserMailer.new.password_reset(user).deliver
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails class-method instance-methods

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

是!object.nil?== object.present?在Rails?

可以安全地假设!object.nil? == object.present?在Rails中,或者有没有问题?这是一个场景:

  def signed_in?
    !current_user.nil? # Would current_user.present? mean the same thing here?
  end

  def sign_in(user)
    cookies[:token] = user.token
    self.current_user = user
  end

  def current_user
    @current_user ||= User.find_by(token: cookies[:token]) if cookies[:token]
  end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

知道为什么当快速移动光标时mouseleave事件没有注册?

检查这个小提琴:http://jsfiddle.net/abitdodgy/7rFb6/1/

快速移动光标时,mouseleave事件有时不会注册.为什么会这样?

将鼠标悬停在所选图像上时,会.controls出现一个图层,允许您删除所选内容.但是,一旦你取消悬停,.controls图层就会消失.如果在图层之间快速移动光标,则不会总是发生这种情况.

尝试选择图像并在它们之间快速移动光标,您会发现这种情况正在发生.如果选择了图像,则.controls除非将鼠标悬停在图层上,否则该图层不应显示.

有任何想法吗?

jquery

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

在Rails中实现NullObject模式

我是一个应用程序,Post belongs_to :user我想保留已删除用户的帖子.在查看作者被删除的帖子时,这可能会导致视图出错.我试着这样做:

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User', foreign_key: 'user_id'

  def author
    author || NullUser.new
    super
  end
end
Run Code Online (Sandbox Code Playgroud)

这会导致"堆栈级别变深"错误.为什么?我能做到这一点:

class Post < ActiveRecord::Base
  belongs_to :user

  def author
    user || NullUser.new
  end

  def author=(user)
    self.user = user
  end
end
Run Code Online (Sandbox Code Playgroud)

但是以这种方式混淆我的协会似乎并不正确.最好的方法是什么?

activerecord ruby-on-rails null-object-pattern

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

如何在Rails 4中缓存个性化片段?

我的应用程序(Rails 4)允许用户对帖子进行投票.是否可以缓存帖子,但个性化投票缓存,以便显示一个针对current_user的个性化?例如,用户是否投票.

我宁愿不改变html结构来实现这一点.

# posts/_post.html.slim
- cache post do
  h1 = post.title
  = post.text
  = render 'votes/form', post: post

# votes/_form.html.slim
- if signed_in? && current_user.voted?(post)
  = form_for current_user.votes.find_by(post: post), method: :delete do |f|
    = f.submit
- else
  = form_for Vote.new do |f|
    = f.submit
Run Code Online (Sandbox Code Playgroud)

ruby caching ruby-on-rails

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

在Ruby类中干掉条件验证

如何清理我的验证码?我有一个Discussion有aa categorystatus字段的模型.状态值取决于类别值.例如,category == 'question'只能在其中具有状态的讨论STATUSES[:question].

  STATUSES   = {
    question:   %w[answered],
    suggestion: %w[pending planned started completed declined],
    problem:    %w[started solved]
  }
  validates :status, allow_blank: true, inclusion: { in: STATUSES[:question] },   if: lambda { self.category == 'question' }
  validates :status, allow_blank: true, inclusion: { in: STATUSES[:suggestion] }, if: lambda { self.category == 'suggestion' }
  validates :status, allow_blank: true, inclusion: { in: STATUSES[:problem] },    if: lambda { self.category == 'problem' }
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 3.

ruby ruby-on-rails dry

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