楷模:
#StatusMessage model
class StatusMessage < ActiveRecord::Base
belongs_to :users
default_scope :order => "created_at DESC"
end
#User Model
class User < ActiveRecord::Base
has_many :status_messages
end
Run Code Online (Sandbox Code Playgroud)
在控制器中,我想连接这两个表并从两个表中获取字段.例如,我想要email来自User和status来自的领域StatusMessage.我用的时候:
@status = User.joins(:status_messages)
Run Code Online (Sandbox Code Playgroud)
要么
@status = User.includes(:status_messages)
Run Code Online (Sandbox Code Playgroud)
它只给我用户表数据.
我该如何实现这个要求?
我有两个清单
a = [1, 2, 3, 4, 1, 2]
b = a.uniq # b = [1, 2, 3, 4]
c = a - b
Run Code Online (Sandbox Code Playgroud)
结果得到了 c = []
我期待结果 c = [1, 2]
我怎么能得到这个?
ruby-1.9.2-p180 :007 > a = {:a => 10, :b => 20}
=> {:a=>10, :b=>20}
ruby-1.9.2-p180 :008 > a.reverse_merge({:c => 30})
NoMethodError: undefined method `reverse_merge' for {:a=>10, :b=>20}:Hash
from (irb):8
from /home/sayuj/.rvm/rubies/ruby-1.9.2-p180/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题NoMethodError?
我的条件如下:
if connection
if "name" == connection.name
...
end
end
Run Code Online (Sandbox Code Playgroud)
connection可能nil最初有价值,所以我无法检查if connection && "name" == connection.name
如何有效地简化条件?
我得到了异常Thrift::TransportException (end of file reached),我想用消息("文件结束到达")来拯救它.
现在我做
begin
#...
rescue Thrift::TransportException => e
raise e unless "end of file reached" == e.message
# do whatever if it is not end of file reached.
end
Run Code Online (Sandbox Code Playgroud)
有没有办法做这个红宝石?
有没有更好的方法来执行以下代码?
user.name = "abc"
user.email = "abc@test.com"
user.mobile = "12312312"
Run Code Online (Sandbox Code Playgroud)
这样的事情会做:
user.prepare do |u|
u.name = "abc"
u.email = "abc@test.com"
u.mobile = "12312312"
end
Run Code Online (Sandbox Code Playgroud) routes.rb中:
match 'first/#!/:name' => 'first#first'
Run Code Online (Sandbox Code Playgroud)
first_controller.rb:
class FirstController < ApplicationController
def first
@name = params[:name]
end
end
Run Code Online (Sandbox Code Playgroud)
但是@name当我渲染url时,变量为nil:http:// localhost:3000/first /#!/ sayuj
请帮忙
什么是星号变量*arr?
*arr = "sayuj"
=> ["sayuj"]
*arr = *%w{i am happy}
=> ["i", "am", "happy"]
*arr = %w{i am happy}
=> [["i", "am", "happy"]]
Run Code Online (Sandbox Code Playgroud) #!/bin/bash
local dept=0
while [ $n < 5 ]
do
echo $n
$n++
done
Run Code Online (Sandbox Code Playgroud)
此代码返回错误7: cannot open 5: No such file
我应该在哪里更改?
我为我的ruby脚本设置了一个crontab.
crontab -l
12 10 * * * /bin/bash -c 'cd /home/user/path/ && /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -rubygems script.rb'
Run Code Online (Sandbox Code Playgroud)
命令/bin/bash -c 'cd /home/user/path/ && /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -rubygems script.rb'运行良好.
在cron中,cron正在执行命令(我检查了syslog:
sudo tail /var/log/syslog
(user) CMD (/bin/bash -c 'cd /home/user/path/ && /home/user/.rvm/rubies/ruby-1.9.2-p136/bin/ruby -rubygems script.rb')
Run Code Online (Sandbox Code Playgroud)
)
但是脚本并没有完全执行.我没有得到预期的结果.
可能是问题的原因是什么?如果有人能帮助我,我们会感激不尽.
如何编写activerecord语句,
Comments.where("attachment IS NOT NULL")
Run Code Online (Sandbox Code Playgroud)
在DataMapper中
即,我想"SELECT * FROM comments WHERE attachment IS NOT NULL;在rails中使用DataMapper 执行.
请帮忙; 我对DM不太熟悉!
x ^ y = z我有x和z.我想找出y使用Ruby的价值.
例如:
x = 10
z = 100
# 10 ^ 2 => 100
Run Code Online (Sandbox Code Playgroud)
我的预期结果是2.Ruby语言中是否有任何内置方法可以解决这个问题?