您列出宝石的顺序是否重要?这两个块是等价的吗?
gem 'carrierwave'
gem 'rmagick'
Run Code Online (Sandbox Code Playgroud)
和
gem 'rmagick'
gem 'carrierwave'
Run Code Online (Sandbox Code Playgroud) 我需要从原始gist加载shell脚本,但我找不到获取原始URL的方法.
curl -L address-to-raw-gist.sh | bash
Run Code Online (Sandbox Code Playgroud) 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
需要?
如何通过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类型.
在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) 可以安全地假设!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) 检查这个小提琴:http://jsfiddle.net/abitdodgy/7rFb6/1/
快速移动光标时,mouseleave
事件有时不会注册.为什么会这样?
将鼠标悬停在所选图像上时,会.controls
出现一个图层,允许您删除所选内容.但是,一旦你取消悬停,.controls
图层就会消失.如果在图层之间快速移动光标,则不会总是发生这种情况.
尝试选择图像并在它们之间快速移动光标,您会发现这种情况正在发生.如果选择了图像,则.controls
除非将鼠标悬停在图层上,否则该图层不应显示.
有任何想法吗?
我是一个应用程序,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)
但是以这种方式混淆我的协会似乎并不正确.最好的方法是什么?
我的应用程序(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) 如何清理我的验证码?我有一个Discussion
有aa category
和status
字段的模型.状态值取决于类别值.例如,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 ×7
activerecord ×1
caching ×1
class-method ×1
dry ×1
gemfile ×1
gist ×1
hstore ×1
jquery ×1
postgresql ×1
refactoring ×1