#2 楼 @xufuhaobeijing 是的,在 Ruby 中,基本所有常见的业务场景都有对应的 gem 实现,比如 验证用户的 devise,授权的 cancancan,编写 API 的 grape 等等,根本不需要自己一上来就自己写。新手推荐先从直接利用 gem 实现业务需求开始,等有一定基础之后,就推荐你删繁就简,在项目中多自己摸索或者造轮子了,这样才能成长。最后,欢迎进入 Ruby 的欢乐世界!
找个实现了分页的 gem 不就行了, will_paginate,或者 kaminari。这东西完全没必要自己写,如果非要坚持自己造轮子,至少也先看下别人是怎么实现的吧?
#3 楼 @caiqinghua 是 spree 的哪个版本呢?
http://phrogz.net/simplest-possible-ruby-web-server
ruby -run -e httpd -- -p 5000 .
想方便的话,用个 alias 不就搞定了,或者写个 shell function。
#1 楼 @caiqinghua 理论上应该不会,看这里的文档: Custom Methods
By default such validations will run every time you call
valid?
还有个问题,看你的代码不像是为了做校验,更像是一个初始化操作(在缺失 currency 的时候配置 currency 值),这样的代码建议改为 callback 更好。
说到 callback,可以检查是不是你的代码里有类似于这样的 callback 声明?
class Variant
after_initialize :check_price # after_initialize 就是在对象实例化(从数据库中读数据也是要经历这个阶段的)之后调用的 callback ,这个更符合你的业务逻辑才对
我觉得更有可能是这样的 callback 起的作用,这样也才更合理
#6 楼 @zhufengxiangxyz 大家都有自己的工作,不一定能够一直泡在论坛上的
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F
<li><%= link_to "一键比对", contrast_path, class: ('active' if current_page?(contrast_path)) %></li>
#12 楼 @suffering 好的,谢谢,明白了
#9 楼 @suffering 我也一直对关系图生成比较感兴趣,请问 Graphviz 是只要你提供必要的数据,节点布局跟线条那些都是它负责的吗?开发者只需要保证输入的数据是吧?
#5 楼 @suffering 赞一个,千万不要因为造了轮子而觉得不好,要知道,不是每一个人都拥有造轮子的能力,造轮子的过程本身就是学习!
#8 楼 @geekontheway 还真不是空格问题,一旦用 code 包住就会有问题,你看:
@staffs = Staff.where(company: current_company)
@staffs = Staff.where(company_id: current_company.id)
我保证这里边没有空格,但是还是会有问题
建议自己写一个或者用其他轻量级方案,discourse 很重的,可以看 https://github.com/discourse/discourse/blob/master/docs/INSTALL.md#hardware-requirements ,光一个 discourse 就要 1GB 内存了
#46 楼 @forever139 我也去了
当然多个 class_id 字段
这个是甚么意思?没看明白。
我的设想是:
# Model
class User < ActiveRecord::Base
has_and_belongs_to_many :classes, class_name: "Klass"
has_many :messages
end
class Klass < ActiveRecord::Base
has_and_belongs_to_many :users
has_one :messages_board
#Attributes:
# binded_sub_domain => 绑定的二级域名
# checked_at => 审核通过的时间
# ... => 其他字段
end
class MessagesBoard < ActiveRecord::Base
belongs_to :class, class_name: "Klass"
has_many :messages, dependent: :destroy
end
class Message < ActiveRecord::Base
belongs_to :message_board
belongs_to :user
end
# Controller
class ApplicationController < xxxx
def retrieve_current_class_by_sub_domain
@class ||= Klass.find_by binded_sub_domain: request.subdomain # 这一行代码是示例,不保证可执行
end
end
# 权限控制,以 cancancan 为例
class Ability
include CanCan::Ability
def initialize(user)
can [:create, :read], Message, message_board: {class: user.classes} # 用户可以创建跟浏览自己班级下的留言板上的信息
# ... something else
end
end
不知道是不是能够满足你的需求
远程支持下
#19 楼 @sundevilyang 你可以联系 @leondu 或者 @justin ,需要联系方式吗?
这个与语言无关,只要是通用型编程语言都可以,当然,用 Ruby 写是最方便的。
大概看了下,用法也比较符合常用 gem 的规范,文档比较赞,加油,已经 star,具体内容还得有机会在项目中使用到才能评价,反正赞啦。
#17 楼 @citysheep 是的,非常方便,买张动车车票就过去了
同推荐 has_secure_password 其实 Rails 的组件里的很多方法都非常好用,也非常灵活。
沙发,大神威武!
#2 楼 @rei #4 楼 @bill_yang1016 我之前就是读取列表然后过滤,真心丑陋,但是没办法,因为是 gem 里边的代码声明了 validation,但是我又一定要跳过验证,也就只能霸王硬上弓了。