def update_group
cf = CustomField.find_by_name(params[:group_name])
cid = cf.id unless cf.nil?
if params[:flag].to_i == 1
@groups = User.find(params[:uid]).groups.collect(&:lastname)
else
@groups = User.find(params[:uid]).groups.collect(&:id)
end
render :json => {:groups => @groups,:cid => cid}
end
def update_group
cf = CustomField.find_by_name(params[:group_name]) # 找到名字与 URL 参数 group_name 相同的一个 custom_field, 赋值给 cf
cid = cf.id unless cf.nil? # 如果 cf 的值不是 nil ,就把 cf.id 赋值给 cid
if params[:flag].to_i == 1 # 如果 URL 参数 flag 是 1 执行下一句
@groups = User.find(params[:uid]).groups.collect(&:lastname) # 找到 id 与 URL 参数 uid 相同的用户,取出与这个用户相关联的 groups ,再把这些 groups 的 lastname 取出来列成一个数组,把这个由 lastname 组成的数组赋值给 @groups ,至于 group 为什么会有 lastname ......
else # 如果 URL 参数的 flag 不是 1 执行下一句
@groups = User.find(params[:uid]).groups.collect(&:id) # 找到 id 与 URL 参数 uid 相同的用户,取出与这个用户相关联的 groups ,再把这些 groups 的 id 取出来列成一个数组,把这个由 id 组成的数组赋值给 @groups 。
end
render :json => {:groups => @groups,:cid => cid} # 把 @groups 和 cid 以 json 格式渲染输出
end
这是 ruby 代码。 ruby 的这种代码,你分开一点一点看,前一个操作的返回值就是后一个操作的操作对象,你的这个句子中,是以 . 来区分的,所以就可以看作,先 find,再 groups,再 collect,那么 find 找到的结果是一条记录,对一个记录调用关联的 groups,结果就是这个对象关联的 groups 对象,完了再对整个 groups 做 collect 操作,取每个 group 的 lastname 字段,然后返回结果。 你可以按照这种方法,遇到不懂的关键词就去查一查,以后应该可以自己解决这些问题。
#10 楼 @realwol groups.collect 为什么可以这么用,这个东西查不到什么意思,这个和表的设计也有关系吧,我这里有 user 表对应的 Model 类也叫 User,有个 groups_users 表对应的 Model 类叫 Group。
:after_remove => :user_removed
acts_as_customizable rails 和 ruby 都是刚开始学的,问题可能描述不是那么准确,见谅~
这就是 rails 中的一个小门槛,约定,这种名字的规则 就是一个约定,没有强制的规定,也没有一个必要的原因,就是一个约定,如果大家都遵守,那么就会带来很多便利。不需要强行去找个理由解释他,记住就可以。