:plus1:
因为 Gemfile.lock 里使用的版本和当前环境的版本不同,或冲突,所以你先检查一下当前安装的 gem 和引用它的 gem 版本是否一致。通常,多个项目使用同一个 gem,而各自又引用不同的版本,会造成这个问题。
简单的解决办法是,如果是 rvm,可以建一个独有的 gemset,这样能避免很多以上情形。
哈,“读手册”这事的确是要发自内心的去做,不过手册终究太死板,还是需要人帮助理解的,所以就有了 Rails girl 这种活动,帮助大家理解问题。
最后还是要读手册,api 和源代码的,只是心态不同了。
这是 has_one 和 has_many 上的用法:
参数 | 含义 |
---|---|
:destroy | 删除拥有的资源 |
:delete | 直接发送删除命令,不会执行回调 |
:nullify | 将拥有的资源外键设为 null |
:restrict_with_exception | 如果拥有资源,会抛出异常,也就是说,当它 has_one 为 nil 或 has_many 为 [] 的时候,才能正常删除它自己 |
:restrict_with_error | 如有拥有资源,会增加一个 errors 信息。 |
我用 restrict_with_error
,先删子资源,再删上一级。
在 belongs_to 上,也可以设置 dependent,但它只有两个参数:
参数 | 含义 |
---|---|
:destroy | 删除它所属的资源 |
:delete | 删除它所属的资源,直接发送删除命令,不会执行回调 |
10 月 10 日 :plus1:
蛮期待两天的内容分享。
:plus1:
如果不是需要经常改动用户的角色,以及增删角色,我也是只给 user 加一个 role:string 的字段,然后用 cancancan 定义就可以了。
如果是 CMS,ERP 或 CRM,就需要楼主的方法了。
#25 楼 @twocucao #26 楼 @jxs471494539 谢谢啦,最近太忙,有些赶,后面有些内容还不太细致,等出电子书的时候会再补充一些。
它在 gem 中,如果你想用最新版本的 js 文件,从官网下载放到 assets/javascripts 即可。
另外,不建议用 sass 版本,这是从 less 转译的,最好直接 用 less 的版本。而且既然是 rails 项目不如直接用 gem "twitter-bootstrap-rails"
:plus1:
这个问题正是我写第二章时候想解决的,希望有帮助 http://rails-practice.com/content/Chapter_2/2.1.html
不好意思,最近总是在这里贴自己写的东西。
:plus1:
:plus1:
namespace 主要用在 admin 这种场景。
希望这一章能有帮助 http://rails-practice.com/content/Chapter_2/2.3.html 这里吧 guides 中的介绍重新整理了一遍,方便从资源的角度来理解 routes。
希望多一些 Ruby 元编程的分享。
#8 楼 @42thcoder 好的。提的问题在哪里?我没看到,是 github 上么?
http://rails-practice.com/ 第一版已经写完了,希望有帮助。电子版发布之前还会做一点增补。
:plus1:
深圳吃的也蛮不错啦。
我自己的 cms,也有你类似的需求,一个实例为多个站点服务,每个站点有自己 liquid 制作的界面。
多域名单实例 session 没有考虑,因为是各自独立的企业站点。
# Visit from world
scope module: 'domain', constraints: SiteConstraint.new, default: {formmat: "html"} do
get '/', controller: :home, action: :index
get ':action', controller: :home
get 'catalogs/list_(:id)_(:page)', to: 'catalogs#show'
get 'catalogs/:id', to: 'catalogs#index'
get 'articles/:id', to: 'articles#show'
get 'pages/:id', to: 'pages#show'
get 'products/:id', to: 'products#show'
end
class SiteConstraint
def initialize
$RUNNING_SITES = Site.select(:domain).all_actived.map{|ss| ss.domain }
puts Time.now.to_s(:db) + "*"*100
puts "Running sites: #{$RUNNING_SITES.join(', ')}"
end
def matches?(request)
$RUNNING_SITES.include?(request.host)
end
end
class Domain::BaseController < ApplicationController
skip_before_filter :authenticate_user!
before_filter :current_site
private
def current_site
@current_site = Site.where("domain = ? OR system_name = ?", request.host, params[:domain]).first
if @current_site.nil?
render text: Settings.site.messages.site_missing, status: 404 and return
else
Liquid::Template.file_system = DatabaseTemplate.new(@current_site)
end
end
end
1,29,不算晚 2,既然选择,就要坚持 3,拿出有质量的作品
大公司工作久了会让人麻木,建议多参加一些开发者聚会,多参加创业论坛之类。再不,出去玩,人玩野了,视野就开阔了。
+1,正打算给一个站换到 upyun 呢?那个站不大但是图片和 html 很多。
gem 'coffee-rails', '~> 4.0.0'
去掉就可以了
字段少未必数据少,如果是数据少且不经常变动,比如系统配置,可以转入到 config.yml 中。
如果是一些辅助数据,比如“谁看过我”,“我看过谁”之类的数据,可以转入 redis 等非关系型数据库。
如果是需要关系型数据库的功能,比如外键查找,事物处理等,还是建 model 吧。
库里今天少得了至少 10 分,詹皇 10 助攻,输的没脾气。